package com.jsy.common.util.bytecode;

import org.objectweb.asm.*;

public class MyClassVisitor extends ClassVisitor {
    public MyClassVisitor(ClassVisitor cv) {
        super(Opcodes.ASM9, cv);
    }

    @Override
    public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) {
        MethodVisitor mv = cv.visitMethod(access, name, descriptor, signature, exceptions);
//        if (name.equals("methodName")) { // 指定要删除的方法名
        if (name.equals("onlinePreview")) { // 指定要删除的方法名
            mv = null; // 返回null表示删除该方法
        }
        // 修改方法名为"oldMethod",返回true
//        if ("oldMethod".equals(name)) {
//            return new MethodVisitor(Opcodes.ASM9, mv) {
//                @Override
//                public void visitCode() {
//                    // 新方法体：直接返回42
//                    mv.visitLdcInsn(true);
//                    mv.visitInsn(Opcodes.IRETURN);
//                }
//            };
//        }
        // 修改方法签名名,返回true
        System.out.println("name: " + name);
        System.out.println("signature: " + descriptor);
        if ("(Ljavax/servlet/http/HttpServletRequest;)Z".equals(descriptor)){
            return new BooleanMyMethodVisitor(api, mv,descriptor);
        }
        return mv;
    }

}